package com.hetao.jmb2c.entity;

import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;

@Data
@TableName("tb_member")
public class Member implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 用户ID
     * 数据库列：user_id (主键)
     */
    @TableId("user_id")
    private Long userId;

    /**
     * 真实姓名
     * 数据库列：true_name
     */
    private String trueName;

    /**
     * 联系电话
     * 数据库列：telephone
     * 格式：区号-号码 如 010-12345678
     */
    private String telephone;

    /**
     * 手机号码
     * 数据库列：mobile
     * 要求：
     * - 11位数字
     * - 建议唯一索引
     */
    private String mobile;

    /**
     * 所在地区
     * 数据库列：area
     * 格式：省-市-区 如 北京市-北京市-朝阳区
     */
    private String area;

    /**
     * 联系地址
     * 数据库列：contact_addr
     */
    private String contactAddr;

    /**
     * QQ号码
     * 数据库列：qq
     */
    private String qq;

    /**
     * 性别
     * 数据库列：sex
     * 取值：
     * - true: 男
     * - false: 女
     */
    private Boolean sex;

    /**
     * 生日
     * 数据库列：birthday
     * 格式：yyyy-MM-dd
     */
    private Date birthday;

    /**
     * 会员分组ID
     * 数据库列：group_id
     * 说明：关联会员分组表
     */
    private Integer groupId;

    /**
     * 经验值
     * 数据库列：exp
     */
    private Integer exp;

    /**
     * 积分
     * 数据库列：point
     * 说明：可用于兑换商品
     */
    private Integer point;

    /**
     * 消息ID集合
     * 数据库列：message_ids
     * 格式：逗号分隔的ID字符串
     */
    private String messageIds;

    /**
     * 注册时间
     * 数据库列：time
     * 格式：yyyy-MM-dd HH:mm:ss
     */
    private Date time;

    /**
     * 邮政编码
     * 数据库列：zip
     * 格式：6位数字
     */
    private String zip;

    /**
     * 用户状态
     * 数据库列：status
     * 取值：
     * - true: 正常
     * - false: 锁定
     */
    private Boolean status;

    /**
     * 用户拥有的工具
     * 数据库列：prop
     * 格式：JSON字符串
     */
    private String prop;

    /**
     * 账户余额
     * 数据库列：balance
     * 精度：2位小数
     */
    private BigDecimal balance;

    /**
     * 最后登录时间
     * 数据库列：last_login
     * 格式：yyyy-MM-dd HH:mm:ss
     */
    private Date lastLogin;

    /**
     * 用户习惯设置
     * 数据库列：custom
     * 格式：JSON字符串
     * 内容：配送方式、支付方式等偏好设置
     */
    private String custom;

    /**
     * 电子邮箱
     * 数据库列：email
     * 要求：
     * - 符合邮箱格式
     * - 建议唯一索引
     */
    private String email;

    /**
     * 微信OpenID
     * 数据库列：open_id
     * 安全要求：
     * - 不直接暴露给前端
     */
    private String openId;

    /**
     * 登录密码
     * 数据库列：password
     * 安全要求：
     * - 必须加密存储
     * - 不明文存储
     * - 不返回给前端
     */
    private String password;

    /**
     * 头像URL
     * 数据库列：avatar
     * 格式：
     * - 完整URL
     * - 建议使用OSS存储
     */
    private String avatar;
}
